﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Objects;

namespace AplicacionUrHardwarez
{
    public partial class formEstadisticas : Form
    {
        AlmacenEntities productosContext;
        //currentformEstadisticas;


        public formEstadisticas()
        {
            InitializeComponent();
        }

        public string idProducto
        {
            get { return lblEstastisticasProductoID.Text; }
            set { lblEstastisticasProductoID.Text = value; }
        }

        private void btnVolverEstadisticas_Click_1(object sender, EventArgs e)
        {
            formMenu2 menu = new formMenu2();
            menu.Visible = true;
            this.Visible = false;
            menu.Location = this.Location;
        }

        private void formEstadisticas_Load(object sender, EventArgs e)
        {

            //this.gridEstadisticas.DefaultCellStyle.ForeColor = Color.Black;

            //// Creamos la variable productosContext que es el que maneja las consultas con la base de datos
            //productosContext = new AlmacenEntities();

            //// Recogemos la tabla productos con el gestor de entidades
            //var productos = productosContext.Productos;

            //// Rellenamos el datagridview con los datos obtenidos por el gestor
            //gridEstadisticas.DataSource = productos;
            ////gridProductos.Columns["ID"].Visible = false;
            ////cboFiltroProducto.DataSource = productos;
            ////cboFiltroProducto.DisplayMember = "Nombre";
            this.gridEstadisticas.DefaultCellStyle.BackColor = Color.Black;
            this.gridEstadisticas.DefaultCellStyle.ForeColor = Color.Yellow;
            this.gridEstadisticas.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            this.gridEstadisticas.MultiSelect = false;
            this.gridEstadisticas.ReadOnly = true;
            this.gridEstadisticas.RowHeadersVisible = false;



            //select new { productos2.ID, productos2.Codigo, productos2.Nombre,
            //    productos2.Descripcion, productos2.Precio, productos2.Stock, salidas.StockOut, entradas.StockIn };

            // Esta linea llama al meodo SetGridViewSortState definido anteriormente, sirve para evitar que las 
            //columnas se utilicen para reordenar los datos

            //SetGridViewSortState(this.gridEstadisticas, DataGridViewColumnSortMode.NotSortable);



            // Creamos la variable AlmacenEntities2 que es el que maneja las consultas con la base de datos


            //            // Recogemos la tabla productos con el gestor de entidades
            //            var productos = AlmacenEntities2.Productos;

            //            // Rellenamos el datagridview con los datos obtenidos por el gestor

            //            //gridProductos.DataSource = productos;


            //            //gridProductos.Columns["ID"].Visible = false;

            //            //string lastName = "Zhou";

            //            //using (AlmacenEntities context = new AlmacenEntities())
            ////{
            ////    ObjectSet contacts = context.Productos.Where(

            ////    var ordersQuery = from contact in contacts
            ////                      where contact.LastName == lastName
            ////                      select new { LastName = contact.LastName, Orders = contact.SalesOrderHeaders };

            try //Rellenar el datagrid con los datos obtenidos en la bbdd
            {
                var AlmacenEntities2 = new AlmacenEntities();
                var data = from productos2 in AlmacenEntities2.Productos
                           join
                               salidas in AlmacenEntities2.Salidas on productos2.ID equals salidas.IdProducto
                           join
                               entradas in AlmacenEntities2.Entradas on productos2.ID equals entradas.IdProducto
                           select new { productos2.ID, productos2.Codigo, productos2.Nombre, productos2.Descripcion, productos2.Precio, productos2.Stock, salidas.StockOut, entradas.StockIn };
                gridEstadisticas.DataSource = data;
                gridEstadisticas.ClearSelection();
            }
            catch
            {
                MessageBox.Show("No se puede conectar con la base de datos");
            }

            //Establecemos un tamaño para las celdas, mejora la estetica del datagrid
            DataGridViewColumn columnID = gridEstadisticas.Columns[0];
            DataGridViewColumn columnCodigo = gridEstadisticas.Columns[1];
            DataGridViewColumn columnDescripcion = gridEstadisticas.Columns[3];
            DataGridViewColumn columnPrecio = gridEstadisticas.Columns[4];
            DataGridViewColumn columnStock = gridEstadisticas.Columns[5];
            DataGridViewColumn columnStockOut = gridEstadisticas.Columns[6];
            DataGridViewColumn columnStockIn = gridEstadisticas.Columns[7];

            columnID.Width = 35;
            columnCodigo.Width = 58;
            columnDescripcion.Width = 140;
            columnPrecio.Width = 60;
            columnStock.Width = 60;
            columnStockOut.Width = 60;
            columnStockIn.Width = 60;

            lblEstastisticasProductoID.Text = gridEstadisticas.Rows[0].Cells[0].Value.ToString(); 
        }


        private void formEstadisticas_Close(object sender, EventArgs e)
        {
            productosContext.Dispose();
        }


        private void gridEstadisticas_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // Recogemos los datos del click del usuario en el datagrid
            int i;
            i = gridEstadisticas.SelectedCells[0].RowIndex;
            //Guid buscarID = new Guid(gridEstadisticas.Rows[i].Cells[0].Value.ToString());

            idProducto = gridEstadisticas.Rows[i].Cells[0].Value.ToString();

        }

        private void btnSeleccionarProducto_Click(object sender, EventArgs e)
        {
            try
            {
                productosContext = new AlmacenEntities();
                Guid buscarID = new Guid(idProducto);
                var busqueda = (from p in productosContext.Productos
                                where p.ID == buscarID
                                select p);

                var filtrado = busqueda.ToList();
                gridEstadisticas.DataSource = filtrado;
            }
            catch
            {
                MessageBox.Show("Debes pinchar un producto en el listado primero");
            }
        }

        // boton deseleccionar producto
        private void button1_Click(object sender, EventArgs e)
        {
           
            //this.gridEstadisticas.DefaultCellStyle.BackColor = Color.Black;
            //this.gridEstadisticas.DefaultCellStyle.ForeColor = Color.Yellow;
            //this.gridEstadisticas.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            //this.gridEstadisticas.MultiSelect = false;
            //this.gridEstadisticas.ReadOnly = true;
            //this.gridEstadisticas.RowHeadersVisible = false;


            try //Rellenar el datagrid con los nuevos datos obtenidos en la bbdd
            {
                var AlmacenEntities2 = new AlmacenEntities();
                var data = from productos2 in AlmacenEntities2.Productos
                           join
                               salidas in AlmacenEntities2.Salidas on productos2.ID equals salidas.IdProducto
                           join
                               entradas in AlmacenEntities2.Entradas on productos2.ID equals entradas.IdProducto
                           select new { productos2.ID, productos2.Codigo, productos2.Nombre, productos2.Descripcion, productos2.Precio, productos2.Stock, salidas.StockOut, entradas.StockIn };
                gridEstadisticas.DataSource = data;
                gridEstadisticas.ClearSelection();
            }
            catch
            {
                MessageBox.Show("No se puede conectar con la base de datos");
            }

            //Establecemos un tamaño para las celdas, mejora la estetica del datagrid
            DataGridViewColumn columnID = gridEstadisticas.Columns[0];
            DataGridViewColumn columnCodigo = gridEstadisticas.Columns[1];
            DataGridViewColumn columnDescripcion = gridEstadisticas.Columns[3];
            DataGridViewColumn columnPrecio = gridEstadisticas.Columns[4];
            DataGridViewColumn columnStock = gridEstadisticas.Columns[5];
            DataGridViewColumn columnStockOut = gridEstadisticas.Columns[6];
            DataGridViewColumn columnStockIn = gridEstadisticas.Columns[7];

            columnID.Width = 35;
            columnCodigo.Width = 58;
            columnDescripcion.Width = 140;
            columnPrecio.Width = 60;
            columnStock.Width = 60;
            columnStockOut.Width = 60;
            columnStockIn.Width = 60;

            lblEstastisticasProductoID.Text = gridEstadisticas.Rows[0].Cells[0].Value.ToString(); 
        }

    }
}



//this.gridEstadisticas.DefaultCellStyle.ForeColor = Color.Black;
//    //productosContext = new AlmacenEntities(); //Instanciar productosContext
//    //// Populamos el combobox con los datos de la BBDD
//    //cboFiltroProducto.DataSource = productosContext.Productos;
//    //cboFiltroProducto.DisplayMember = "Nombre";

//     // Create an ObjectContext instance based on SADemoEntities
//     var AlmacenEntities2 = new AlmacenEntities();

//    // Retrieve the list of customers from the entity
//    var productos = AlmacenEntities2.Productos;

//    // Bind the customers object to the data grid
//    gridEstadisticas.DataSource = productos;




       //IQueryable<formEstadisticas> formEstadisticasQuery = from p in productosContext.Productos
       //                                                          where p.ID == obtenerGuid
       //                                                          select p;
        

       //                 // Create a query for orders that includes line items.
       //         ObjectQuery<Producto> orderQuery = productosContext.Productos.Where(productos.

       //             .Where(p.ID == obtenerGuid);




//            // inicializamos el objeto productosContext
//            productosContext = new AlmacenEntities();

//            // Create a query for orders that includes line items.
//             Guid obtenerGuid = new Guid(cboFiltroProducto.Text);

////            ObjectQuery<Producto> p = productosContext.Productos
////                .where (pro == obtenerGuid)
////                new ObjectParameter("customerId", customerId))
////                .Include("SalesOrderDetails");
          
////            // Query for customers in London.
////IQueryable<formProductos> prodQuery =
////    from productosContext in productosContext.Productos
////    where cust.City == "London"
////    select cust;
